from flask import request
from werkzeug.exceptions import HTTPException

from app import create_app
from app.libs.error import APIException
from app.libs.error_code import ServerError

app = create_app()


@app.errorhandler(Exception)
def framework_error(e):
    # 这个装饰器在1.0版本后才能捕捉全部的异常
    # 有3种异常需要注意 APIExcepiton HTTPException Exception
    if isinstance(e, APIException):
        return e
    elif isinstance(e, HTTPException):
        code = e.code
        message = e.description
        error_code = 1007
        return APIException(message=message, code=code, error_code=error_code)
    else:
        # 要学会使用log日志记录异常
        # 调试模式  —— 项目上线时需要隐藏详细的错误信息
        # 调试时需要准确的错误信息
        if not app.config['DEBUG']: # 是否是调试
            return ServerError()
        else:
            raise e


if __name__ == '__main__':
    app.run(debug=False)

